package com.cc.pokergame.model;

import android.util.Log;

import com.cc.pokergame.utils.Constants;

import java.util.ArrayList;
import java.util.Random;

/**
 * 扑克管理器类
 */
public class PokerManager {
    // 一副牌列表
    private ArrayList<Poker> pokers = new ArrayList<>();

    // 在构建时完成构建一副牌和洗牌工作
    public PokerManager() {
        constructPoker();
    }

    /**
     * 洗牌
     */
    private void shuffle() {
        // 创建随机
        Random random = new Random();
        // 随机索引值
        int randomIndex = -1;
        for (int i = 0; i < pokers.size(); i++) {
            randomIndex = random.nextInt(pokers.size());
            if (i == randomIndex) continue;

            Poker temp = pokers.get(i);
            pokers.set(i, pokers.get(randomIndex));
            pokers.set(randomIndex, temp);
        }
    }

    /**
     * 构建一副牌
     */
    public void constructPoker() {
        for (int i = 0; i < Constants.pokerArray.length; i++) {
            for (int j = 0; j < Constants.pokerArray[i].length; j++) {
        /*for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 13; j++) {*/
//                Log.i("ltxx",String.valueOf(Constants.pokerArray.length));
//                Log.i("ltxx",String.valueOf(Constants.pokerArray[i].length));
                // 创建一个牌对象
                Poker poker = new Poker(i, j);
                // 将创建的牌存入到一副牌列表中
                pokers.add(poker);
            }
        }

        // 洗牌
        shuffle();
    }

    /**
     * 随机取出一张扑克
     * @return 返回一张牌对象
     */
    public Poker getRandomPoker(){
        Random random = new Random();
        // 获取随机索引值
        int randomIndex = random.nextInt(pokers.size());
        // 根据随机索引值拿到对应的扑克对象
        Poker poker = pokers.get(randomIndex);
        // 从扑克列表中删除拿到的扑克
        pokers.remove(randomIndex);
        // 将拿到的扑克对象返回出去
        return poker;
    }
}
